#include <iostream>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
#include <map>
#include <queue>
#include <cstdio>
#include <string>
#include <stack>
#include <set>
#define IOS ios::sync_with_stdio(false), cin.tie(0)
using namespace std;
typedef long long ll;
ll num[210];
struct node{
    ll id,step;
};
queue<node> q;
bool vis[210];
int main()
{
    IOS;
    ll n,a,b;
    cin>>n>>a>>b;
    for(ll i=1;i<=n;i++){
        cin>>num[i];
    }
    node temp;
    temp.id=a;
    temp.step=0;
    q.push(temp);
    while(!q.empty()){
        node t=q.front();
        if(t.id==b){
            cout<<t.step<<endl;
            return 0;
        }
        q.pop();
        temp.id=t.id-num[t.id];
        if(temp.id>=1&&temp.id<=n&&!vis[temp.id]){
            vis[temp.id]=true;
            temp.step=t.step+1;
            q.push(temp);
        }
        temp.id=t.id+num[t.id];
        if(temp.id>=1&&temp.id<=n&&!vis[temp.id]){
            vis[temp.id]=true;
            temp.step=t.step+1;
            q.push(temp);
        }
    }
    cout<<-1<<endl;
    getchar();
    getchar();
    return 0;
}
